Technote 11XX

Mac OS 8.5

Being a compendium of revised and new features of interest to software developers in this most recent release of the Mac OS.

By John Montbriand
Apple Worldwide Developer Technical Support

Copyright 1998 by Apple Computer, Inc. All Rights Reserved.

Version 1.0

PRELIMINARY TECHNOTE ALERT

This is a DRAFT revision of the Mac OS 8.5 technote and as such it contains information that is YET TO BE REVIEWED, is a description of a WORK IN PROGRESS, it may contain inaccuracies and/or omissions, and it may not accurately reflect the final state of Mac OS 8.5 after it is released. This technote will be under review and is SUBJECT TO CHANGE WITHOUT NOTICE until the final Mac OS 8.5 release date. Apple Computer, Inc. makes no warranties, either expressed or implied, regarding the material contained herein. Its contents should be regarded as 'for interest only' and should not be used for making 'important decisions' until after Mac OS 8.5 is released and this document has been frozen.

This Technote discusses changes and corrections in the next generation of the Mac OS Operating System: Mac OS 8.5. This system follows Mac OS 8.1 and contains several new and revised features. Mac OS 8.5 offers improvements and/or new features in the following areas:

  • Performance in User Interface facilities, Networking, File I/O, AppleScript, Finder, and System Startup Time.
  • Ease-of-use with consolidated control panels.
  • Connectivity with Finder Internet integration, SNMP, and more network configuration interfaces.
  • Compatibility with Unicode Support, File Translation capabilities, Windows volume support.
  • User interface facilities including Appearance theme switching.

Document History

1.0 first document.

Contents


Hardware Requirements

Mac OS 8.5 can be installed on any Mac OS compatible computer that originally shipped with a PowerPC processor that has at least 16 megabytes of real RAM and a minimum of 24 megabytes of logical RAM.


Installation

Rhapsody Support

  • Mac OS 8.5 supports the Rhapsody DR2 Blue Box via standard install within the Blue Box.

Install Mac OS 8.5

This is an improved version of the "Install Mac OS" application provided with Mac OS 8.0 and 8.1. The new "Install Mac OS" application provides an improved user experience by allowing the user to customize components before any installation begins and not requiring further user intervention until the installation is complete.

The "Install Mac OS" application program requires System 7.0 or later to run. Typically, users will boot from the installation CD.

Also, users will only be able to update existing system folders if they contain Mac OS 7.1 or later. Clean installations must be performed on drives containing earlier versions of the system software or no system software at all.

New and improved Developer and scriptwriter features:

  • File & Target Lists - a more compact way of storing file copy commands to get around Resource Manager limitations.
  • Alias Atom - an atom for creating aliases during installations.
  • The only new public APIs are enhancements to the current Installer Engine AE suite.


Finder 8.5

Finder 8.5 is an updated version of Finder 8.1, offering improved window redraw performance, faster file copies and several other new, improved, or extended user interface elements. Specific additions to the user interface experience provided by the Finder are:
  • A new dialog allowing users to "Fix" broken aliases has been added.
  • Users can now add an alias to any Finder object into the "Favorites" folder using a Contextual menu.
  • Folder script actions that are triggered by various Finder actions can be attached to any folder using contextual menus.
  • Sound support for Finder actions has been added.
  • The Finder's resource fork is now read-only which, in many cases, will prevent accidental corruption of the Finder.
  • The system stability warning dialog box was not being displayed when the Finder was re-launched after a system error. Now it is.
  • It is now possible for an application to specify 'alis' as a file type in its bundle resources to indicate that unresolved alias files should be sent to its "open documents" Apple event handler.
  • Finder 8.5 provides a mechanism for developers to designate certain files as busy files. Busy files are files that are in the process of being created or copied. The Finder will treat any file whose type is set to zero or to a type within the range 'bzy ', 'bzy!', ..., 'bzy?' as a busy file and will not attempt to change its type or creator. The range 'bzy ', 'bzy!', ..., 'bzy?' is provided for developers wishing to animate a file's icon during its creation.

    COMPATIBILITY NOTE
    Archive developers should store the entire contents of both the FInfo and FXinfo records and the DInfo and DXinfo records when archiving files and directories. All fields in these records should be preserved, including flags and fields marked as reserved (with the exception of the inited bit for files containing desktop database information).

    COMPATIBILITY NOTE
    Although frFlags and fdFlags are located at the same offset in catalog records, some of the flags now have different meanings when the catalog record refers to a file and when the catalog record refers to a directory. Developers should not assume flags that are only defined for files are unused when the catalog record refers to a directory. See the flag descriptions in Finder.h for more information about individual flags.

    Autorouting and Extended Routing

  • The Finder now uses the Folder Manager for auto-routing items dropped into the System Folder into folders that have been registered with the Folder Manager for auto-routing.
  • Finder 8.5 recognizes files containing 'rout'=0 resources if their extended routing info bit is set in the file's Finder flags as files containing extended routing information. Files containing extended routing information will be autorouted by the Finder to the folder specified in their 'rout'=0 resource when they are dropped into the System Folder. Typically there will be only one routing information entry in the resource, but the 'rout'=0 resource can contain one or more 20-byte entries. When a file containing extended routing information is dropped into the System Folder, the Finder walks through each entry and uses the LAST one that matches. The 'rout'=0 resource entries are defined as follows:
    typedef struct {
      OSType creator; // ('****' or 0 = wildcard)
      OSType fileType; // ('****' or 0 = wildcard)
      OSType targetFolder; // 'macs' for the System folder
      OSType destinationFolder; // the folder to route into 
      OSType reserved; // not used...should be set to zero
    } RoutingResourceEntry;
  • creator and fileType are unused and should be set to zero.
  • targetFolder designates drag and drop target folder that applies to this routing record. When the file is dropped into a folder of this type, it will be routed to the folder specified in destinationFolder. Currently, only the System Folder is supported for this field, so this field should be set to the System Folder's FindFolder ID ('macs').
  • destinationFolder contains the FindFolder ID for the destination folder where the file should be routed to.
  • Before the Finder will look for the 'rout'(0) resource in a file the routing information flag in the ioFlXFndrInfo.fdXFlags must be turned on. Developers can access this flag using the kExtendedFlagHasRoutingInfo mask defined in Finder.h.

    COMPATIBILITY NOTE
    The fdScript field in the FXInfo record has been dropped and the fdXFlags is now 16 bits wide.

    New Finder display facilities

  • Get Info window can now display multiple panels of information.
  • Finder preferences are now consolidated into a single multiple panel window.
  • A new control has been added to the View Options window allowing users to revert the current view to a standard view.
  • List view columns are now resizable.
  • The new Finder can display Badged icons.
  • Support for proportional scroll bars has been added.
  • Proxy icons are displayed in window title bars.
  • View font and size is now set in the Appearance control panel.
  • To override the default message displayed by the Finder when a file cannot be opened, developers may include a 'STR ' = -16397 resource in any file's resource fork. This message text will be displayed when the user attempts to open a file that cannot be opened overriding the Finder's default message.
  • Facilities for adding custom badges to file and folder icons are now available. See the Icon Services Technote for further details.
  • In previous versions of the Finder, files with their custom icon bit set that did not contain a suite of custom icons were not being handled correctly. The Finder now resets the custom icon bit and uses the default icon for the file if the file does not contain a custom icon suite.

    COMPATIBILITY NOTE
    Starting with Finder 8.5, the invisible 'Icon' file placed in directories may contain resource based information used by the Finder other than an icon suite and it should only be deleted if it contains no resources at all.

  • The Finder now uses the new gestaltVMInfoType Gestalt selector to determine how information about virtual memory will be displayed in the "About This Computer" window. Developers wishing to control how the Finder displays virtual memory information may redefine this selector to return any of the values shown in Table 1. Table 1 describes the various virtual memory information display modes available in this version of the Finder.

    Table 1. Finder virtual memory display modes determined by the value of the gestaltVMInfoType ('vmin') selector.

    Selector Name

    Value
    VM Information Displayed

    gestaltVMInfoSizeStorageType

    0

    Display either "virtual memory on" or "virtual memory off", the size of the backing store, and the name of the volume where the store is located (the default)

    gestaltVMInfoSizeType

    1

    Display either "virtual memory on" or "virtual memory off", and the size of the backing store

    gestaltVMSimpleType

    2

    Display either "virtual memory on" or "virtual memory off"

    gestaltVMNoneType

    3

    No virtual memory information will be displayed, even when virtual memory is turned on

    Internet Location Files and Clipping Files

    Both Internet Location Files and Clipping files are created by the Finder when it receives a drag and drop command. The type of file created depends on the contents of the drag as described below.

  • The new Finder supports enhanced text clipping naming. Text clipping file names are now generated using the first few characters in the text supplied as the text clipping (truncated using the ellipse character as appropriate). Previous Finders would name text clippings as 'text clipping', 'text clipping 1', ... and so on. For example, the new Finder may name a text clipping generated using this sentence as "For example, the...".
  • The clipping file types have been added to the universal interfaces. Table 2 lists the clipping file types created by the Finder.

    Table 2. Clipping file types created by the Finder. Clipping files created by the Finder will have a creator type of kClippingCreator = 'drag'.

    Constant Name

    OSType
    Description

    kClippingPictureType

    'clpp'

    a QuickDraw picture 'PICT'

    kClippingTextType

    'clpt'

    contains ASCII text 'TEXT'

    kClippingSoundType

    'clps'

    contains a sound resource of type 'snd '

    kClippingUnknownType

    'clpu'

    unknown data

  • The Finder will create an Internet location document when it receives a drag containing a URL. A drag containing a URL will be noticed by the Finder in one of two ways: (a) if the drag contains a 'url ' flavor then the flavor's data will be treated as an Internet url, or (b) if the drag contains a 'TEXT' flavor, then the Finder will look at the text data attached to the flavor and determine if it is a URL. When it finds URL information, the Finder will create an Internet location file assigning the file type according to the url type. Table 3 lists the file types the Finder will assign to Internet Location files.

    Table 3. Internet location file types assigned by the Finder. Internet location files created by the Finder will have a creator type of kInternetLocationCreator = 'drag'.

    Constant Name

    OSType
    Description

    kInternetLocationHTTP

    'ilht'

    an http address

    kInternetLocationFTP

    'ilft'

    a ftp server address

    kInternetLocationFile

    'ilfi'

    a file on disk

    kInternetLocationMail

    'ilma'

    an email address

    kInternetLocationNNTP

    'ilnw'

    news group or article

    kInternetLocationAFP

    'ilaf'

    apple filing protocol address

    kInternetLocationAppleTalk

    'ilat'

    an AppleTalk address

    kInternetLocationGeneric

    'ilge'

    some other resource

    COMPATIBILITY NOTE
    Specific file formats and contents of both clipping files and Internet location files are undocumented and subject to change without notice.

    AppleScript Support

  • AppleScript support in Finder 8.5 includes:
    • Terminology for new features has been added.
    • View options scripting terminology has been replaced with new terminology.
    • Query or change information about any file or folder.
    • Open, close, or reposition windows and icons.
    • Query information about running processes.
    • Query or set sharing privileges.
    • Move files to the Trash.
    • Eject disks.
    • Restart or shut down the machine.
    • Create folders or alias files.
  • Support for the following Folder Actions has been added (folder actions can be attached to folders using a contextual menu command):
    • Attach and remove actions from folders.
    • List actions attached to a folder.
    • Execute a handler when a folder is opened, closed, added to, has items removed from it, or has its window moved or resized.

    Related Materials:


Apple Help

Apple Help provides systemwide instructional help services for virtually all aspects of the Mac OS user experience. The Apple Help technology has two main components, Help Viewer and Apple Guide.

Apple Guide 2.3

In Mac OS 8.5, Apple Guide is used to coach users through sequences of commands required to perform a task. Apple Guide 2.3 provides the following features:

  • The ability to call a specific Apple Guide sequence by name from AppleScript.
  • Apple Guide 2.3 is backwards compatible with guide files built to work with earlier versions of Apple Guide.
  • Apple Guide 2.3 is integrated with the Help Viewer.

Help Viewer 1.0

The Help Viewer is a lightweight HTML rendering application that allows users to conveniently browse online help materials. The help viewer provides the following facilities:

  • Uses the Apple Information Access Toolkit (AIAT) to search for user queries. The results are displayed in a dynamically generated HTML page.
  • AppleScript facilities allowing callers to search for any topic or string in Help and display the results.
  • URL links can be used to run AppleScripts.
  • URL links can be used to open Apple Guide sequences.

Related Materials:

  • Apple Guide Complete: Designing and Developing Onscreen Assistance.
  • The Apple Guide SDK.


Inside the System file

The system file contains routines and resources responsible for running the computer. This section describes new features and corrections built into the System file. These items are always present under Mac OS 8.5, even when shift key is held down at system startup.

General

  • In Mac OS 8.5 the emulated 68K processor runs in user mode even when VM is off and all 68k interrupt code runs in supervisor mode. As a result, all 68k interrupt code utilizes the interrupt stack pointer instead of the user stack pointer (the stack used by code running at system task level). This change reduces the chance of the application stack overrunning the application's heap zone during interrupt processing.

    WARNING:
    Developers should not assume the 68K side of the system is running in Supervisor mode when Virtual Memory is OFF.

    Developers who require access to supervisor mode 680x0 instructions can use the _EnterSupervisorMode trap to switch the processor mode. The assembler code shone in Listing 1 illustrates the correct way to call the _EnterSupervisorMode trap and enter supervisor mode. Here, the result returned by DebuggerGetMax is examined to determine if selector 8 is available. If it is available, _EnterSupervisorMode is called.

    Listing 1. The correct way to ensure the 680x0 processor is in supervisor mode.

    ; Is _DebugUtil available?
    ; Code running on a IIci or later can skip this step.
        move.w  #_Unimplemented,d0
        _GetToolTrapAddress
        move.l  a0,-(sp)
        move.l  #$A08D,d0         ; get _DebugUtil
        _GetToolTrapAddress
        cmpa.l  (sp)+,a0          ; was this previously
                                  ; unimplemented?
        beq.s   @noEnterSupervisorMode
       
    ; Is the _EnterSupervisorMode selector available?
        _DebuggerGetMax           ; check how many _DebugUtil
                                  ; selectors are implemented
        cmpi.l  #8,d0             ; is selector 8 available?
        blt.s   @noEnterSupervisorMode  ; EnterSupervisorMode isn't
                                 ; available
       
        _EnterSupervisorMode     ; switch to supervisor mode
                                 ; (switches stacks)
        move.w  d0,-(sp)         ; and save the previous SR contents
                                 ; on the stack
        bra.s   @inSupervisorMode
       
    ; If _EnterSupervisorMode wasn't available, then put
    ; sr on the stack
    @noEnterSupervisorMode
        move    sr,-(sp)         ; save the current SR
       
    @inSupervisorMode
       
    ; ...
    ; do stuff in supervisor mode
    ; remember that the stack has been swapped if we switched
    ; from user mode to supervisor mode.
    ; ...
       
        move    (sp)+,sr         ; restore the SR

    COMPATIBILITY NOTE
    DebuggerGetMax is available on all Mac OS 8.5 supported systems. On other systems, developers can test for the _DebugUtil trap before calling DebuggerGetMax.Testing for VM to determine if the _EnterSupervisorMode trap should be used is considered a programming error: developers should use the above method instead.

  • Various managers, in particular Font Manager, are considerably less memory-hungry, both on a per-process and systemwide basis.
  • Several of the Managers are now entirely implemented in PowerPC code.
  • The dialog informing the user that an improper shutdown occurred has been reformatted. It now includes an option to run Disk First Aid and will time out after two minutes.

    Related Materials:

    • For more info on 68K processor modes, see Technote 1094, Virtual Memory Application Compatibility:
    • "User vs Supervisor Mode" <http://developer.apple.com/technotes/tn/tn1094b.html#Works6>
    • "Privileged Instruction Emulation" <http://developer.apple.com/technotes/tn/tn1094b.html#Works7>

Alias Manager

The Alias Manager is the part of the operating system that communicates with the file system to maintain alias records used store information about file and folder locations. The Alias Manager does not create Finder alias files; the Finder creates these files and stores alias records created by the Alias Manager in them.
  • The Alias Manager's search methods have been broadened to include cases where the simple search for an existing file on a mounted volume fails yet the absolute path stored in the alias record resolves to an existing file. In these cases, the Alias Manager will return a reference to the file found using the absolute path.
  • The Alias Manager has been extended and now provides the following new routines:

    IsAliasFile

    OSErr IsAliasFile(const FSSpec *fileFSSpec,
                      Boolean *aliasFileFlag,
                      Boolean * folderFlag);

    fileFSSpec is a pointer to a file specification record referring to a file.

    aliasFileFlag is a pointer to a Boolean variable set to true if the file is an alias file created by the Finder.

    folderFlag is a pointer to a Boolean variable set to true if the alias refers to a folder.

    The function IsAliasFile returns true if the file referred to by the fileFSSpec parameter is an alias file created by the Finder.

    ResolveAliasWithMountFlags

    OSErr ResolveAliasWithMountFlags(const FSSpec *fromFile,
                      AliasHandle alias,
                      FSSpec *target,
                      Boolean *wasChanged,
                      unsigned long mountFlags);

    fromFile, if not null, is used to in resolving relative aliases.

    alias is the AliasHandle to resolve.

    target contains a pointer to a FSSpec record that will refer to the file or directory referred to by the alias when the function completes successfully.

    wasChanged referrs to a Boolean variable that will be set to true if the alias record has been modified by ResolveAliasWithMountFlags.

    mountFlags can be set to kResolveAliasFileNoUI to prevent any user interaction, including disk switch alerts, while the alias is being resolved.

    The routine ResolveAliasWithMountFlags is identical to ResolveAlias with the exception that it provides the mountFlags parameter allowing callers to suppress disk switch alerts.

    ResolveAliasFileWithMountFlags

    OSErr ResolveAliasFileWithMountFlags(FSSpec *theSpec,
                      Boolean resolveAliasChains,
                      Boolean *targetIsFolder,
                      Boolean *wasAliased,
                      unsigned long mountFlags);

    theSpec on input refers to a FSSpec record that refers to an alias file. If the function completes successfully, it will refer to the file or the directory that was referred to by the alias file.

    resolveAliasChains turns on or off resolution of chains of alias files (for example, an alias file that refers to an alias file that finally refers to the target file).

    targetIsFolder points to a Boolean variable that will be set to true if the target referenced by the alias file was found to be a folder.

    wasAliased returns true if theSpec referred to an alias file.

    mountFlags can be set to kResolveAliasFileNoUI to prevent any user interaction, including disk switch alerts, while the alias is being resolved.

    The routine ResolveAliasFileWithMountFlags is identical to ResolveAliasFile with the exception that it provides the mountFlags parameter allowing callers to suppress disk switch alerts.

    COMPATIBILITY NOTE
    Before calling IsAliasFile, ResolveAliasWithMountFlags, or ResolveAliasFileWithMountFlags, developers can determine if these routines are available by testing the Alias Manager gestalt value's gestaltAliasMgrResolveAliasFileWithMountOptions bit. Also, see the InterfaceLib section for important information about linking with the new InterfaceLib.

  • The routines NewAliasMinimal or NewAlias could cause heap corruption if an invalid FSSpec record with the length of the name field greater than 63 bytes was provided as a parameter. These routines now return a paramErr error when they receive an invalid FSSpec record.

    Related Materials:

    • The Alias Manager chapter of Inside Macintosh: Files.
    • The Alias Manager section on page 2-64 of Inside Macintosh: QuickTime.
    • Technote FL30, "Resolving Alias Files Quietly"

Appearance Manager 1.1

The Appearance Manager provides user interface configuration facilities for the appearance of graphical user interface elements. The Appearance Manager includes the following new features:
  • Switchable visual appearances.
  • Data-driven themes.
  • Many new brushes and text colors.
  • Drawing brushes and primitives for most interface elements.
  • Support for saving and restoring the GrafPort state regardless of whether the theme draws using a color or pattern.
  • Several different styles of scrollbars and check boxes.
  • Appearance and font change notifications are provided by way of Apple Events. Each event uses kAppearanceEventClass as its class and one of the constants listed in Table 4 as its ID. There are no parameters to any of the events, and these events are sent only to those processes that have called RegisterAppearanceClient to register as an Appearance Manager client. Table 4 lists the new Apple Events sent to Appearance Manager clients.

    Table 4. Appearance and font change Apple Events. These events use the Apple Event class kAppearanceEventClass = 'appr'.

    Constant Name

    OSType
    Description

    kAEAppearanceChanged

    'thme'

    theme changed (e.g. platinum to hi-tech)

    kAESystemFontChanged

    'sysf'

    system font changed

    kAESmallSystemFontChanged

    'ssfn'

    small system font changed

    kAEViewsFontChanged

    'vfnt'

    views font changed

  • Animated cursor support.
  • Support for sound.
  • The new Appearance folder has been added to the System Folder to support themes. The Appearance folder is used as a common location to store Appearance related data files, and it is also the location of the Theme Files, Sound Sets, and Desktop Pictures folders. Theme files are autorouted to their appropriate folders when dropped into the System Folder. Table 5 lists the new Appearance folders folders present in Mac OS 8.5.

    Table 5. New folders for Appearance.

    Folder Name

    OSType
    Description

    Appearance

    'appr'

    Appearance related materials

    Theme Files

    'thme'

    location for theme files

    Sound Sets

    'snds'

    location for appearance related sound sets

    Desktop Pictures

    'dtp'

    location for desktop picture files. Files of type 'JPEG' are auto-routed into this folder when dropped into the System Folder.

    The file Folders.h contains the constants listed in Table 5 along with their symbolic names (kAppearanceFolderType, kThemesFolderType, kSoundSetsFolderType, and kDesktopPicturesFolderType) for use in calls to FindFolder.

    Related Materials:

    • Appearance Manager SDK
    • Mac OS 8 Toolbox Reference

ATSUI (Apple Type Services for Unicode Imaging)

The Unicode™ Standard is a new character set encoding that tries to encode all of the the characters in use in the world today. ATSUI extends the QuickDraw API and make it possible for Macintosh applications to draw Unicode text. ATSUI provides both a low level services for drawing 16-bit Unicode text as well as much of the high-end typographical control previously provided by QuickDraw GX.
  • Provides text imaging services for 16-bit Unicode (UTF-16).
  • ATSUI fully conforms with The Unicode Standard, Version 2.1.
  • ATSUI fully supports the Unicode bidirectional algorithm, including the bidirectional ordering codes.
  • ATSUI text-drawing can be integrated within a QuickDraw-only application (Unlike QuickDraw GX it does not require developers to adopt a non-QuickDraw API for all text drawing when its services are being used in an application).
  • For Japanese fonts that lack a Unicode 'cmap', ATSUI will automatically generate one on-the-fly. The font file is not modified, but the conversion makes certain assumptions about character encodings. For best results, it is recommed that Japanese fonts include a Unicode 'cmap'.

    Related Materials:

    • ATSUI SDK

Code Fragment Manager

The Code Fragment Manager (CFM) is responsible for the retrieval of executable PowerPC instruction sequences on PowerPC computers. Almost all of the PowerPC Mac OS and all PowerPC applications depend on or utilize the services of the CFM in some way.
  • Code Fragment Manager calls to ResolveAliasFile at system startup would attempt to put up the 'Please Insert The Disk" alert before any drawing environment was established. CFM now calls ResolveAliasWithMountFlags to disable the disk switch alerts so this problem no longer occurs.
  • The Virtual Memory Manager's file mapping code in Mac OS 8.1 makes large chunks of file mapped memory resident that are certain or very likely to be used in the near future. In Mac OS 8.5, that functionality has been moved into the Code Fragment Manager. Application launch performance should be approximately the same in most cases. However, files that have multiple code fragments (for example, fat CFM 68K/PowerPC applications) may benefit from this refinement.
  • The CFM provides an optional facility where an application can specify a special folder to be searched for shared libraries. A field of the 'cfrg' resource provides the ID of an 'alis' resource. If nonzero that resource is read from the app file and resolved. The intent is that this is a relative alias to a subfolder of the application folder (for example, a repository for plug-ins). The Code Fragment Manager now calls the new Alias Manager routine ResolveAliasWithMountFlags to resolve aliases referenced by the 'cfrg' resource to prevent any user interaction while libraries are being loaded.
  • The Application Support folder is now part of the CFM search path.
  • CFM defines a new bit in the 'cfrg' resource which forces the fragment's code into the application heap.

    Related Materials:

    • Inside Macintosh: Power PC System Software

Control Manager

The Control Manager provides facilities for drawing and processing user interaction with controls drawn on the screen. New features for the Control Manager include:
  • The Control Manager is now implemented in PowerPC code.
  • There is a new Edit Text control variant supporting inline input.
  • The Edit Text control now supports locking (disabling of user input).
  • The Static Text control now supports text truncation.
  • The Icon control's icon can now be changed dynamically.
  • Check Boxes and Radio Buttons now support automatic toggling.
  • Proportional scrolling (Set/GetControlViewSize) is now available.
  • Support for 32-bit control values has been added.
  • Facilities for association of tagged data with controls (properties) have been added.
  • Scrolling text box (read-only for now) support has been added.
  • A Control region API has been added.
  • A Control validation API has been added.
  • Control Manager now validates all ControlHandle parameters and returns errors if any are invalid.
  • Fonts used by controls can now be specified as a standard system font plus modifications.
  • The clock control now returns more part codes.
  • Edit text control now supports a validation callback procedure.

    Related Materials:

Device Manager

The Device Manager provides a standard programming interface for communications between applications and code that is designed to communicate with particular hardware devices (although some "device drivers" do not actually drive devices).
  • There are three new DriverGestalt selectors allowing developers to return, among other things, color icons for their disk drives. Table 6 describes the new selectors.

    Table 6. New DriverGestalt selectors introduced in Mac OS 8.5.

    Selector Name

    Value
    Information Returned

    kdgPhysDriveIconSuite

    'dics'

    A pointer to a IconFamily ('icns') data structure that can be used to represent the Disk Driver's physical drive (formerly in csCode 22) in driverGestaltResponse.

    kdgMediaIconSuite

    'mics'

    A pointer to a IconFamily ('icns') data structure for representing the Disk Driver's media (formerly in csCode 21) in driverGestaltResponse.

    kdgMediaName

    'mnam'

    A pointer to a Pascal string describing the Disk Driver (formerly in csCode 21) in driverGestaltResponse.

    Related Materials:

    • The Device Manager chapter of Inside Macintosh: Devices.
    • Designing PCI Cards & Drivers

Dialog Manager

The Dialog Manager provides automated user interface facilities for managing user interactions with dialog windows. New features for the Dialog Manager include:
  • The Dialog Manager is now implemented in PowerPC code.
  • The Dialog Manager now provides facilities for specifying dialog timeouts (automatic dismissal after specified idle time).
  • It is now possible for developers to specify the event mask used inside of ModalDialog.

    Related Materials:

Display Manager

The Display Manager provides software services for managing changes in both the display settings and the arrangement of monitors attached to Mac OS-compatible computers.
  • With some display cards resolutions that were marked as non-preset resolutions by the display card were not showing up in the *recommended* list of resolutions in the Monitors & Sound Control Panel as they should have. Here, the Monitors & Sound control panel was checking the non-preset bit while the Display Manager was not: the Display Manager would strip the lower timing and Monitors & Sound would strip the higher (not preset) timing so neither would appear in the timing list used to build the *recommended* list. The Display Manager now correctly observes the non-preset bit and the *recommended* list is built correctly.
  • In some cases an unreadable character was being appended to the end of some names returned by the Display Manager. This has been corrected.
  • A problem in the Display Manager and Monitors & Sound control panel that could cause a crash when a multiscan monitor was attached to a PowerBook has been corrected. This problem would occur opon waking a PowerBook when the monitor was disconnected during sleep after the PowerBook was put to sleep with the Monitors & Sound control panel open.
  • A problem on some machines where the display enabler would not load at startup if a smart display was plugged into the built-in monitor output has been corrected.

    Related Materials:

    • The Display Manager SDK

Disk Initialization Package

The Disk Initialization Package provides formatting services for disks.
  • DILoad was loading foreign file system resources into the current heap zone (usually, the current application's heap) creating a situation that could cause a crash if the application quit before the resources were unloaded. These resources are now loaded into the system heap.
  • File System Manager-based file systems that support bad block sparing are now called to spare blocks when a disk driver verify request fails. This feature was unavailable in Mac OS 8.0 and Mac OS 8.1.
  • The initial value of "Format" popup menu in the disk initialization dialog now indicates the current format of the disk.

    Related Materials:

Drag Manager

Macintosh Drag and Drop provides standard communications and user interface services for applications and other parts of the system allowing users to perform "drag and drop" commands. New features for the Drag Manager include:
  • Drag hilite now uses theme hilite color.
  • A potential crashing problem that could occur with Translucent drags has been corrected in this version of the Drag Manager. In previous versions of the Drag Manager, a pointer to an unlocked relocatable block was being used in SetDragImage.

    Related Materials:

    • Drag Manager SDK

DriverServicesLib

DriverServicesLib provides utility routines for PowerPC based driver code. The following improvements in virtual memory support have been added to the Driver Services library:
  • PrepareMemoryForIO now uses LockMemoryForOutput instead of LockMemory when the IOPreparationOptions are kIOIsOutput, but not kIOIsInput.
  • With Mac OS 8.5, GetPageInformation returns the kPageIsLockedResident (kPageIsLocked) PageStateInformation bit correctly. When Virtual Memory is on, kPageIsLockedResident indicates that a page has been locked with LockMemory or LockMemoryForOutput. Before Mac OS 8.5, resident pages with the kPageIsInMemory (kPageIsResident) PageStateInformation bit set always had the kPageIsLockedResident bit set as well - even when they were not locked.
  • With Mac OS 8.5, GetPageInformation returns a new PageStateInformation bit: kPageIsHeldResident. When Virtual Memory is on, kPageIsHeldResident indicates that a page is held in physical memory (but not necessarily locked) with HoldMemory, LockMemory or LockMemoryForOutput.

    Related Materials:

    • Designing PCI Cards & Drivers

Event Manager

The Event Manager provides mechanisms for communications between your software and people utilizing the computer. Changes in the Event Manager include:
  • Parts of the Event Manager are now PowerPC native.
  • Formerly, the event queue was limited to 20 events, and as a result keystrokes from faster typists were being lost. The size of the event queue has been increased to 48 elements.

    Related Materials:

    • "Event Manager" chapter of Inside Macintosh: Toolbox Essentials.

File System Manager

The File System Manager manages the use of foreign file systems. The File System Manager provides a general means by which foreign file systems can be installed, identified, and interfaced to the Operating System.
  • XGetVolInfo requests (like GetVolInfo requests) to a FSM based file system are now passed a working directory number or the default volume number (the value zero) in ioVRefNum if the File Manager caller used a working directory number or the default volume number. Under Mac OS 8.1, ioVRefNum would always contain the real volume reference number when passed to a FSM based file system. This change lets the FSM based file system determine what to return in ioVNmFls correctly. (See also, the File Manager section).
  • UTTrashBlocks now correctly returns an OSErr result (either noErr, rfNumErr, or fnOpnErr). Before Mac OS 8.5, UTTrashBlocks returned the file reference number passed in as the fileRefNum parameter.
  • The File Manager's Disk Cache now range checks the buffer parameter passed to UTReleaseBlock and UTMarkDirty. If the buffer parameter is bad, those calls will no longer crash the system.

File Manager

The File Manager provides services for storage and retrieval of disk based information. New features for the File Manager include:
  • PBXGetVolinfo was returning a an incorrect value in ioVNmFls when ioVRefNum contained either a working directory id or zero (the default directory) when the call referred to a FSM based file system volume. As described in the File System Manager section, this has been corrected so the File Manager now passes the working directory id or zero through to FSM based file systems rather than converting the value to a real volume reference number first.
  • Under some circumstances the Hard Disk on some PowerBook models would not spin down when it was instructed to do so by the control strip module. This has been corrected.
  • UnmountVol would sometimes return -47 (File busy) errors when called for some server mounted volumes. Here, the File Manager was leaving some working directories open. This has been corrected.
  • The pleaseCacheBit (bit 4) in the ioPosMode field is now supported by the disk cache. Read/Write requests to HFS/HFS+ volumes can now set the pleaseCacheBit in ioPosMode to request caching for larger blocks of data. File System Manager clients can also set this bit in the cacheOptions parameter to UTCacheReadIP, UTCacheWriteIP, UTVolCacheReadIP, and UTVolCacheWriteIP requests. Setting this bit does not guarantee a request will be cached; however, it does increase the probability of a request being cached.
  • PBGetFPos now clears all 16 bits of ioPosMode.
  • The routines PBAllocate and PBAllocContig have been modified so they set the value of ioActCount before they return even if an error occurs during their execution.
  • The minimum size for the disk cache is now 128K.
  • Colons are now allowed in filenames when using the Unicode-based APIs. Previously, the colons occuring in file names were returned as-is, making such files unreachable using the Pascal string based APIs. Colons are now converted to question marks (as are other non-representable characters) and the FileID is inserted in the name.
  • Calls to PBCatMove on HFS Plus formatted volumes were creating oversized catalog file thread records leaking space in the catalog file. This has been corrected so PBCatMove no longer leaks space in the catalog file.
  • A problem where PBGetCatSearchSync could return inconsistent results when searching HFS+ volumes has been corrected.
  • When the HFS+ code was saving the Volume Header information it was sign extending the attributes field causing the upper bits to be set when the software lock bit (bit 15) was set. This sign extension no longer occurs.
  • PBCatSearch has been modified so it does not return catChangedErr as often as it did in previous system releases.
  • Placing a file ID in the directory ID field of a CInfoPBRec and calling PBGetCatInfo now correctly returns dirNFErr. Under Mac OS 8.1, this would incorrectly produce information about a file as if it were a directory. Before 8.1, it would return fnfErr.
  • Added a new call, PBHTrashVolumeCaches, which will flush a volume and invalidate that volume's caches in the File Manager and Disk Cache. Bit 2 of the vMAttrib field returned by GetVolParams is set if a volume supports this call.
  • Mac OS Extended volumes store all dates in UTC. In Mac OS 8.1, those dates were converted to/from local time using the current time zone and daylight savings time settings, which would cause the dates to appear to change by one hour when switching to/from daylight savings time. In Mac OS 8.5, the dates are converted using the daylight savings time setting that would have been in effect as of the date being converted.
  • In Mac OS 8.1, when a Mac OS Standard or Mac OS Extended volume was extremely fragmented and an operation required the extents B-tree to grow beyond its maximum number of extents, the File Manager would return error -127 and leave extra bits set in the volume bitmap (Disk First Aid would report this as a minor problem in the volume's allocation bitmap). The File Manager has been corrected so that under these circumstances it will return a dskFulErr and it will not leave extra bits set in the volume bitmap.
  • A problem where a crash could occur when saving a log in MacsBug has been corrected. Here, the File Manager was attempting to jump to location zero.
  • The File Manager was not properly invalidating some caches when a volume was unmounted. The most common symptoms were missing items in Finder windows when mounting/unmounting a series of floppies or disk images (such as installing software from floppies), or a disk switch dialog appearing asking for a disk with a garbage or blank name. The File Manager now correctly invalidates a volume's caches when it is unmounted.
  • A problem that could occur when mounting a CD-ROM has been corrected. In these cases, mounting a CD-ROM would sometimes lead to a dialog stating the volume needed to be repaired and under certain conditions after a crash this could cause corruption of writable volumes when they were mounted.
  • A PBAllocContig call requesting more space than was available contiguously would return the correct error but still allocate a smaller amount of space. PBAllocContig has been changed so that under these conditions it no longer allocates any space.
  • The File Manager no longer writes to the first sector of a resource fork every time it is closed. Formerly, the first sector of a resource fork contained a copy of the 112 byte MFS directory entry intended for use by the Finder and disk repair utilities in older versions of Mac OS. No current disk repair utilities rely on this information nor does the Finder. Removal of this extra read/write cycle speeds up Finder copies for files containing resource forks.
  • A problem that could occur when booting from a Mac OS Standard volume has been corrected. Here, if aliases to shared library files located on a Mac OS Extended volume were present in the Extensions folder, then these aliases would be modified in such a way that they would fail to resolve every time the system was rebooted. In Mac OS 8.5, such aliases resolve correctly.
  • A problem where PBDelete could return -127 and corrupt the volume bitmap when trying to delete a file on a Mac OS Extended volume has been corrected. This problem would occur when a filename was originally converted to Unicode using the wrong text encoding (such as an application creating a file using a Japanese filename without the language kit installed, but later attempting to delete the file with the language kit installed).

    WARNING:
    Copying files near the 2 Gigabyte HFS file size limit to HFS format volumes will fail when the destination file's physical size goes beyond the 2GB size limit due to larger allocation block sizes being used on the destination volume.

    Related Materials:

    • The File Manager chapter of Inside Macintosh: Files.
    • Technote FL16, "File Manager Performance and Caching"

Folder Manager

The Folder Manager provides facilities for locating "special" folders (such as, for example, the Extensions folder) in the System Folder without relying on the names of those folders. This aids developers in application localization.
  • Folder Manager defines new auto-routings for preferences files of type 'pref' (the Preferences folder), shared libraries (the Extensions folder), data fork fonts (the Fonts folder), Open Font Architecture plug-ins (the Extensions folder), and AppleTalk extensions (the Extensions folder).
  • FindFolder now returns the actual location of the printer descriptions folder.
  • The Application Support folder is now part of the Code Fragment Manager's library search path.
  • Auto-routing has been added for files of type 'issp' (to Internet Search Sites).
  • Files of type 'JPEG' are now auto-routed to the Desktop Pictures folder.
  • As in pre Mac OS 8.0 versions of the system software, the FindFolder folder cache now detects volume changes and keeps the cache up to date. In Mac OS 8.0 and Mac OS 8.1 it was possible for FindFolder to return stale data.
  • Several new folders have been defined for Mac OS 8.5. Table 7 lists these new folders and their types.

    Table 7. New folders for Mac OS 8.5.

    Folder Name

    OSType
    Description

    'Launcher Items'

    'laun'

    Items appearing in the Launcher control panel. Items included in folders with names beginning with a bullet (option-8) character will appear as a separate panel in the launcher window.

    'Internet Search Sites'

    'issf'

    Internet search site specification files used by the Find application when it accesses internet search sites.

    'TheFindByContentFolder'

    'fbcf'

    An invisible folder located in a volume's root directory. This folder is used to store files created by Find by Content.

    'Find'

    'fnds'

    Contains files used by the Find facilities in Mac OS 8.5.

    'Installer Logs'

    'ilgf'

    A location for saving installer log files.

    'ColorSync Profiles'

    'prof'

    A location for storing ColorSync profiles.

    'Appearance'

    'appr'

    Appearance related materials

    'Theme Files'

    'thme'

    The location for storing theme files

    'Sound Sets'

    'snds'

    The location for storing appearance related sound sets

    'Desktop Pictures'

    'dtp'

    The location for storing desktop picture files. Files of type 'JPEG' are auto-routed into this folder when dropped into the System Folder.

    'Favorites'

    'favs'

    The location for storing Internet location files, aliases, and aliases to other frequently used items. Facilities for adding items into this folder are found in Contextual Menus, the Finder, and Navigation Services, et al.

    'Scripts'

    'scr'

    A location for saving AppleScripts.

    'Recent Applications'

    'rapp'

    Apple Menu Items saves aliases to recent applications here.

    'Recent Documents'

    'rdoc'

    Apple Menu Items saves aliases to recently opened documents here.

    'Recent Servers'

    'rsvr'

    Apple Menu Items saves aliases to recently mounted servers here.

    'Speakable Items'

    'spki'

    A location for scripts and items recognized by speech recognition.

    'Internet'

    'int'

    A location for saving Internet related applications, resources, and tools.

    'Location Manager Modules'

    'walk'

    Location manager modules are stored here.

    'Location Manager Prefs'

    'trip'

    Location manager preferences files are saved here.

    'Locations'

    'fall'

    Files containing configuration information for different locations are stored here.

    Related Materials:

Font Manager

The Font Manager provides system wide services for the retrieval of symbols and glyphs for display of textual information.
  • A problem where an italic bitmap font would incorrectly override a TrueType font of the same size displaying letters with the wrong style has been corrected. Now, the TrueType font will be displayed unless the style of the bitmap font matches exactly.
  • Font Manager no longer allocates or de-allocates caches on a per processes basis. A system wide font cache is allocated at system startup in the system heap. All processes share this same cache.
  • The Font Manager does more parameter checking than in previous versions.
  • Font Manager now purges fonts from the font cache more aggressively.
  • All fonts shipping with Mac OS 8.5 (except VT102) include the new euro glyph.
  • The US version of Mac OS 8.5 ships with the following new fonts: Capitals, Gadget, Sand, Techno, and Textile.

    Related Materials:

    • The Font Manager chapter of Inside Macintosh: Text.
    • TN11xx: The Euro Currency Symbol

Help Manager

The Help Manager is responsible for the drawing and display of Help Balloons and the Help menu.
  • The Help Viewer application can now be accessed directly from the Help Menu.

    Related Materials:

Icon Services

New for Mac OS 8.5, Icon Services provides fast and efficient facilities for retrieval of appropriate icon information used to represent files, directories, or other commonly used icons (such as, for example, the caution alert icon, the note alert icon, the help icon, et cetera).
  • Both Icon Services and Icon Utilities are now implemented in PowerPC code.
  • Icon Services is Appearance Manager aware, and will always return information consistent with the active theme.
  • To avoid duplication of data and for better performance, Icon Services utilizes a system wide icon cache shared by all applications. Icon data returned is common to all applications, so it is possible for two different applications to obtain an icon reference that refers to the same icon data.
  • A reference count is maintained for icons loaded into the cache, and icons can only be removed from the cache if the reference count is zero.
  • The new 'icns' resource contains data for 4 icon sizes (mini, small, large, huge) at 4 color depths (1-bit, 4-bit, 8-bit and 32-bit) and two kind of masks (1-bit masks and 8-bit masks).
  • 'icns' resources can contain deep masks (8 bit masks) allowing for the specification of transparent drawing effects. Each pixel in a deep mask indicates the level of transparancy desired for drawing a particular pixel. Transparency levels range from 0 (transparent) through 255 (opaque).
  • In the previous version of Icon Services, Icon Utilities, only 34 arbitrary colors would highlight properly (they were known as the Apple icon colors). This limitation has been removed.
  • Drivers can now provide color icons by implementing the kdgMediaIconSuite driver gestalt selector as described in the Device Manager section.

    Related Materials:

    • Icon Services Technote

InterfaceLib

InterfaceLib provides a Code Fragment Manager interface to many of the Mac OS toolbox routines on PowerPC based computers. The following additions and changes are present in this most recent version of the InterfaceLib.
  • The low memory accessor LMGetABusVars has been obsoleted and should not be used as it behaves differently on 68K and PowerPC. The new accessor LMGetABusGlobals that retrieves the long at 0x02D8 should be used in its place. LMGetABusVars will continue to return the value 0x02D8. The following new accessors were added: LMGetABusGlobals, LMSetABusGlobals, LMGetABusDCE, LMSetABusDCE.
  • The following low memory accessors have been added. They are useful for determining how long it has been since any user activity has occurred:
    • LMGetKeyTime -- the value returned by TickCount when the last keystroke was received.
    • LMGetMBTicks -- the value returned by TickCount when the mouse button was last pressed.

    Formerly, these values could be accessed using the routines shown in listing 2.

    Listing 2. low memory accessors for KeyTome and MBTicks.

    long LMGetMBTicks (void) {
        return (*(long *)0x016E);
    }
          
    long LMGetKeyTime (void) {
        return (*(long *)0x0186);
    }

    Also, routines for setting these values have also been added: LMSetKeyTime, LMSetMBTicks.

  • AddDrive

    There was a problem in the parameter handling of the PowerPC AddDrive glue code in InterfaceLib that would mangle the drive number before called through to the 68k code. This problem has been corrected.

  • New Alias Manager routines

    IsAliasFile, ResolveAliasWithMountFlags, and ResolveAliasFileWithMountFlags are now included in InterfaceLib.

  • New routines added to InterfaceLib that were previously only available from 68k code:

    DriverInstall, DriverInstallReserveMem, DIXFormat, DIXZero, DIReformat, PBUnmountVolImmed, ReallocateHandleSys, LockMemoryForOutput, MakeMemoryResident, ReleaseMemoryData, MakeMemoryNonResident, FlushMemory, InstallExtensionNotificationProc, RemoveExtensionNotificationProc, InstallExtensionTableHandlerProc, RemoveExtensionTableHandlerProc, FlushCodeCacheRange, NewCServiceWindow, UCTextServiceEvent, ataManager

  • The rest of the PurgeSpace calls that were previously only available from 68k code have been added to InterfaceLib:

    PurgeSpaceTotal, PurgeSpaceContiguous, PurgeSpaceSysTotal, PurgeSpaceSysContiguous

  • All the File System Manager calls have been added to InterfaceLib:

    UTAllocateFCB, UTReleaseFCB, UTLocateFCB, UTLocateNextFCB, UTIndexFCB, UTResolveFCB, UTAllocateVCB, UTAddNewVCB, UTDisposeVCB, UTLocateVCBByRefNum, UTLocateVCBByName, UTLocateNextVCB, UTAllocateWDCB, UTReleaseWDCB, UTResolveWDCB, UTFindDrive, UTAdjustEOF, UTSetDefaultVol, UTGetDefaultVol, UTEjectVol, UTCheckWDRefNum, UTCheckFileRefNum, UTCheckVolRefNum, UTCheckPermission, UTCheckVolOffline, UTCheckVolModifiable, UTCheckFileModifiable, UTCheckDirBusy, UTParsePathname, UTGetPathComponentName, UTDetermineVol, UTGetBlock, UTReleaseBlock, UTFlushCache, UTMarkDirty, UTTrashVolBlocks, UTTrashFileBlocks, UTTrashBlocks, UTCacheReadIP, UTCacheWriteIP, UTBlockInFQHashP, UTVolCacheReadIP, UTVolCacheWriteIP, InstallFS, RemoveFS, SetFSInfo, GetFSInfo, InformFSM, InformFFS

  • The following DriverServicesLib calls have been added to InterfaceLib:

    BlockZero, BlockZeroUncached, IncrementAtomic, DecrementAtomic, AddAtomic, BitAndAtomic, BitOrAtomic, BitXorAtomic, CompareAndSwap, IncrementAtomic8, DecrementAtomic8, AddAtomic8, BitAndAtomic8, BitOrAtomic8, BitXorAtomic8, IncrementAtomic16, DecrementAtomic16, AddAtomic16, BitAndAtomic16, BitOrAtomic16, BitXorAtomic16, TestAndSet, TestAndClear

    COMPATIBILITY NOTE
    Developers linking against newer versions of InterfaceLib who would like to have their products run with previous versions of the system software should weak link with that library otherwise the Code Fragment Manager will not allow your application to launch with earlier versions of InterfaceLib. Developers weak linking against the new InterfaceLib who call any of the routines listed in this section should check to ensure that the routine is defined before calling it.

List Manager

The List Manager is the part of the operating system providing standard user interface facilities for drawing and managing user interaction with lists of items.
  • The List Manager is now implemented in PowerPC code.
  • Support for live scrollbar indicator dragging has been added.
  • The proportional scrollbar indicator is now supported.
  • When deleting or add cells to a list while drawing is turned off (by calls to LSetDrawingMode or LDoDraw), in certain cases it was possible for the ListHandle's bounds to become slightly scrambled and draw incorrectly when drawing was turned back on. This problem has been present in the List Manager since its introduction, and it has been corrected in Mac OS 8.5.
  • List click loops can now be written in PowerPC native code using the Mixed Mode glue available in Lists.h.

    WARNING:
    Writing list click loops in PowerPC native code is not backward-compatible with system releases prior to Mac OS 8.5. For compatibility with all systems prior to Mac OS 8.5, you must still write click loops using 68k assembly or a 68k assembly stub.

    Related Materials:

    • The List Manager chapter of Inside Macintosh: More Macintosh Toolbox.

MathLib

MathLib provides software implementation of floating point support routines for PowerPC computers. All PowerPC processors contain built-in floating point processing capabilities. The routines provided in MathLib supplement those facilities.
  • MathLib is now present in the System file's data fork and as such it is eligible for paging.

    Related Materials:

    • Inside Macintosh: PowerPC Numerics.

Memory Manager

The Memory Manager is the part of the operating system responsible for managing memory allocation requests.
  • A problem where under some circumstances the RAM Disk could not be turned off has been corrected.
  • The Memory Manager is now present in the system file's data fork and as such it is eligible for paging.

    Related Materials:

Menu Manager

The Menu Manager is the part of the operating system responsible for both drawing the menu bar and drawing menus and pop-up menus on the screen while the mouse is being held down.
  • Most of the Menu Manager is now implemented in PowerPC code.
  • Support for association of tagged data with menus & menu items (properties) has been added.
  • Menu contents for menus that use the system MDEF are now cached even when is VM on.
  • It is now possible to remove the current application's name from the Application Menu.
  • Support for disabling icons appearing in menus has been added.
  • The Menu Bar is now drawn in condensed style text and long menu titles are truncated if the screen is too narrow to display the entire menu bar contents.
  • Support for excluding the menu mark column has been added.
  • Support for more than 255 submenus has been added. SetMenuItemHierarchialID can be used to set the full range of menu IDs (-32767 to 32767).
  • Support for enabling and disabling menu items at indexes greater than 31 has been added.
  • Sorting in AppendResMenu was not working as expected in non-English languages. Here, RelString was being called instead of CompareString. AppendResMenu now uses CompareString so sorting now works as expected with non-English languages.
  • Support for showing and hiding the menu bar has been added.
  • New append/insert APIs without meta-character interpretation have been added.
  • The system MDEF now supports all keyboard modifiers and glyphs.
  • Support for setting the font used to draw a menu has been added. Developers should use this new API rather than setting the low memory globals SysFontFam and SysFontSize.

    COMPATIBILITY NOTE
    The Menu Manager does not attempt to modify the behavior of third-party MDEFs for correct colorization in Mac OS 8.5. Application vendors including custom MDEFs with their products must revise their products to support Appearance.

    COMPATIBILITY NOTE
    The Menu Manager does not modify the behavior of the Event Manager to force Button() to return true while tracking sticky menus. MDEF authors who depend on Button() returning false values must modify their products.

    Related Materials:

Navigation Services 1.1

Navigation services provides new open and save panels allowing users to locate and select files and other resources.

COMPATIBILITY NOTE
Standard File's functionality is also provided by Navigation Services. Developers interested in future Mac OS compatibility are encouraged to replace their calls to Standard File with calls to Navigation Services.

Related Materials:

  • Navigation Services SDK

Notification Manager

The Notification Manager provides a mechanism for interrupt level tasks to prompt system task level operations such as displaying an alert containing a message.
  • The Notification Manager was calling GetResource when the interrupt level mask was set to 7 (even though it wasn't executing at interrupt level). This has been corrected.

    Related Materials:

    • The Notification Manager chapter in Inside Macintosh:Processes.

Process Manager

The Process Manager shares the processor among multiple applications. Mac OS 8 includes the following new features in the Process Manager:
  • Under some circumstances the cursor would not change to the cross hairs as expected for small area screen captures. This has been corrected.
  • LaunchApplication now honors alias files.
  • Process Manager is slightly more strict about when it will call jGNEFilter for "fake" keyDown events created by the Text Services Manager, eliminating some duplicate events.
  • During application switches, the Process Manager now checks if a mouse down was pending in the event queue for the foreground application or any floating windows in the Text Services Manager layer. This correction eliminates the possibility of a mouse click in one of the foreground application's windows sneaking through to the application being switched in.
  • The Process Manager will no longer launch invisible 'appe' files.

    Related Materials:

    • The Process Manager chapter of Inside Macintosh: Processes.
    • Technote TN1070, "Background-Only Applications"
    • Technote PS510, "Process Manager Q&As"

PC Card Manager

The PC Card Manager handles software issues related to PC cards.
  • If a PC Card was ejected during sleep (using the pin hole method) and replaced with a different card, then the new card would not be recognized after sleep and the old card icon would remain on the desktop. The PC Card Manager now registers the new card correctly when a card is replaced in this way.
  • The PC Card Manager has been changed to accommodated PC cards that do not contain a CIS (Card Information Structure - information normally stored on a card which tells what kind of card it is). Prior to this change, such a card would simply be ejected. Now, the PC Card Manager uses other data, such as the PCI configuration registers, to establish information about such cards.

    Related Materials:

    • PC Card Manager SDK

QuickDraw

QuickDraw is the part of the MacOS used for drawing and displaying graphical information on the screen and other raster devices. The QuickDraw provided with Mac OS 8.5 is a new native PowerPC implementation of QuickDraw. It is expected that drawing and scrolling performance should improve over previous versions of QuickDraw.
  • Most of QuickDraw is now PowerPC native with the exception of the Palette Manager and the Picture Utilities.
  • QuickDraw pictures containing invalid 0x9A (direct 24 bit images) opcodes recorded on 68k machines would not play back correctly on PowerPC machines. This has been corrected.
  • A problem where the 16-bit encoding routines for QuickDraw pictures would sometimes produce invalid data has been corrected.
  • A problem where larger font sizes would not draw has been corrected. Fonts are now drawn at their largest possible size if a size larger than the maximum font display size is requested.
  • The Roman Script Utilities (DrawJustified, CharToPixel, etc.) have been moved into QuickDraw Text.
  • 'sbit' support, currently available only via a WorldScript II patch, has been rolled into the standard system. This allows systems using two-byte characters to be booted with extensions turned off.
  • All CopyDeepMask transfer modes now work correctly.
  • QuickDraw now performs extensive parameter checking. For parameter errors, QDError will return the paramErr result code.
  • QDError now returns more meaningful results.
  • A problem where passing bkPixPat to FillCRgn would corrupt the current graphics port has been corrected. It is now possible to provide the current background pixpat as a parameter to the FillCRect routine.

    WARNING:
    Calling FillCRect(&qd.thePort->portRect, ((CGrafPtr) qd.thePort)->bkPixPat); in any version of color QuickDraw prior Mac OS 8.5 will destroy the current bkPixPat in the GrafPort.

  • When recording pictures, QuickDraw would read frame buffers for raster images one byte at a time which produced some incompatibility problems when reading frame buffer data from some non-apple devices. For greater compatibility, frame buffers are now read in pixel size chunks that are buffered internally before being passed to the RLE encoding routines.
  • Nearly all of QuickDraw is now present in the system file's data fork and as such it is eligible for paging. The cursor library is not eligible for paging and it remains in memory at all times.

    Related Materials:

    • Inside Macintosh: Imaging with QuickDraw.

QuickDraw Text

QuickDraw Text is the part of the MacOS used for drawing and displaying textual information on the screen and other raster devices.
  • A new Gestalt selector, gestaltQDTextVersion = 'qdtx', has been defined in this release of QuickDraw Text. With this release of QuickDraw Text, the value returned is gestaltAllegroQDText.

    COMPATIBILITY NOTE
    The new QuickDraw Text routines described in this section are available only if the result returned by a call to Gestalt with the selector gestaltQDTextVersion is greater than or equal to the constant gestaltAllegroQDText.

  • Support for anti-aliased text has been added to QuickDraw Text. Anti-aliased text drawing will occur if anti-aliased text drawing is turned on, the destination device pixel depth is greater than or equal to 8 bits, there is sufficient memory available, the requested font size for drawing is larger than the minimum size for anti-aliased drawing, and the font being drawn is an outline font. Two new routines for accessing the state of anti-aliased text drawing can be called from PowerPC applications linking against the shared library named "FontManager" that is included in the system file. The routines are defined as follows:

    IsAntiAliasedTextEnabled

    Boolean IsAntiAliasedTextEnabled(SInt16* outMinFontSize);

    outMinFontSize is an optional parameter and may be set to NULL. If outMinFontSize is not NULL, then the sixteen bit integer at that address will be set to the current lower size limit for antialiasing text (as set in the Appearance Control Panel).

    The function IsAntiAliasedTextEnabled returns true if anti-aliased text display is enabled.

    SetAntiAliasedTextEnabled

    OSStatus SetAntiAliasedTextEnabled(Boolean inEnable,
                                       SInt16 inMinFontSize);

    inEnable indicates the desired state of the anti-aliased text drawing. If inEnable is true, then both anti-aliased text drawing will be turned on and the QuickDraw Text global variable outlinePreferred will be turned on.

    inMinFontSize defines the smallest size font that should be drawn as anti-aliased text. This value must be in the range 1 through 128. If the inMinFontSize parameter is outside of the this range, then the default value 12 is used.

    SetAntiAliasedTextEnabled always returns noErr.

    NOTE: For fonts which have both bitmaps (NFNTs) and outlines (sfnts), the implicit change in outlinePreferred may change the metrics for the bitmap font sizes.

    WARNING:
    Calls to SetAntiAliasedTextEnabled should only be made under special circumstances when greater control over text display during particular operations is desired. Developers changing the state of anti-aliased text drawing must restore its original state before returning control to the system. Failure to do so may result in other parts of the system, most notably, the Appearance control panel, becoming out of sync with the actual state of anti-aliased text drawing.

  • Two new routines for retrieving the pixel dimensions of text that will be drawn on the screen have been added to QuickDraw Text. These routines can be called from PowerPC applications linking against the shared library named "FontManager" located in the system file. The new routines are defined as follows:

    QDTextBounds

    void QDTextBounds(short byteCount,
                      const void* textAddr,
                      Rect* bounds);

    byteCount is the number of bytes of text contained in the buffer located at the address contained in the value textAddr.

    textAddr points to byteCount bytes of textual data.

    bounds is a pointer to a Rect structure whose coordinates will be calculated by QDTextBounds. On return, bounds will contain the bounding coordinates for the entire image (including parts of the image that may extend beyond the first and last pen positions after the text has been drawn) that will be drawn for the text (given the font settings in the current GrafPort). Note that the coordinates returned are relative to the current pen position (as if the pen were located at the origin). For example, in Listing 3 we use QDTextBounds to draw a rectangle around the text 's image. Notice how in this example the bounds returned by QDTextBounds are offset using the current pen position so that the text drawing and the rectangle drawing occur using the same coordinate system.

    Listing 3. Using QDTextBounds to discover where text will be drawn.

    Rect bounds;
    char *text = "sample text";
    Point where;
    SetPt(&where, 100, 100);
    MoveTo(where.h, where.v);
    PenSize(1,1);
    QDTextBounds(text, strlen(text), &bounds);
    OffsetRect(&bounds, where.h, where.v);
    InsetRect(&bounds, -1, -1);
    FrameRect(&bounds);
    DrawText(text, 0, strlen(text));

    The left most edge of the text's image can be either to the right or the left of the pen postition, and the right most edge of the text's image may be to the left or the right of the final pen position.

    FetchFontInfo

    OSErr FetchFontInfo(SInt16 fontID,
                        SInt16 fontSize,
                        SInt16 fontStyle,
                        FontInfo* info);

    fontID is the font ID number for a font.

    fontSize is the font size in pixels.

    fontStyle contains the font style flags for the font.

    info is a pointer to a font information record where the result will be stored.

    FetchFontInfo returns the same information as GetFontInfo except rather than gathering information about the font settings from the current GrafPort this information is provided as parameters to the routine. If FetchFontInfo returns an error, the fields in the FontInfo record will be set to zero (the error code returned is the value returned by FMSwapFont).

    Related Materials:

    • The "QuickDraw Text" chapter of Inside Macintosh: Text.

Script Manager

The Script Manager provides functions for controlling, modifying, and accessing the features of both roman and non-roman script systems.
  • Simple Scripts (Scripts not requiring the Worldscript extension) were not being loaded when the system was booted with extensions turned off. This has been changed so now simple scripts are loaded when extensions are turned off.
  • The keyboard menu bar icon was being drawn twice whenever a new keyboard layout was being selected.
  • WorldScript Power Adapter is not loaded if it is installed by a language kit or other installer, since Mac OS 8.5 has this functionality built in to the System file. WorldScript II is no longer loaded differently than other extensions.
  • Support for Unicode scripts and Unicode keyboard layouts has been added.
  • Font and Keyboard Synchronization can now be turned off. This can be done either in the Keyboard control panel or by setting the smfDisableKeyScriptSync flag in the smGenFlags script manager variable. Calls to KeyScript check this flag to determine if the current keyboard script should be synchronized with the current script. To force keyboard script synchronization for individual calls to KeyScript while keyboard script synchronization is turned off, developers can set bit 7 (smKeyForceKeyScriptBit) in the code argument passed to KeyScript. Calls to KeyScript will not synchronize the current Keyboard Script if the smfDisableKeyScriptSync flag in the script manager variable smGenFlags is set, unless the smKeyForceKeyScriptBit bit is set in the KeyScript call's code parameter.

    Related Materials:

    • The Script Manager chapter of Inside Macintosh: Text.
    • Optional Font and Keyboard Script Synchronization Technote.

Serial Driver

The Serial Driver provides serial communications services for either the printer port or the modem port using the Device Manager API. The Mac OS 8.5 Serial Driver includes the following changes:
  • A problem where some machines would not reboot without the Serial (Built-in) extension in the extensions folder has been corrected.

    Related Materials:

    • The Serial Driver chapter of Inside Macintosh: Devices.
    • Technote TN1018, "Understanding the SerialDMA Driver"
    • DTS Q&A DV30 http://developer.apple.com/qa/dv/dv30.html

Sound Manager

The Sound Manager provides facilities for playback and recording of digitized sounds.
  • The siActiveChannels SPBSetDeviceInfo call was not being accepted on 6100, 7100, or 8100 PowerMacs. This has been corrected.
  • It is now possible to change recording quality while recording.
  • Chained calls to SPBRecord now work when the recording buffer size is smaller than the hardware interrupt buffer size.
  • Sound input source settings made in Monitors & Sound are now remembered across boots on 6100, 7100, and 8100 machines.
  • siRecordingQuality now works as expected.
  • The Power Mac 4400/200 always reported that the microphone is not connected (even if it was). This problem has been corrected.

    Related Materials:

Standard File

Standard File provides a consistent user interface for accessing files by way of the Open and Save As dialog boxes.
  • The number of file types that can be specified for Standard File's SFGetFile,SFPGetFile, StandardGetFile, and CustomGetFile routines has been increased from 32 types to 256 types.
  • A problem where the arrow navigation keys were not working as expected on some PowerBook models has been corrected.
  • Aliases to special folders (for example, the Fonts folder) no longer show up in Standard File as applications.

    COMPATIBILITY NOTE
    Standard File's functionality is also provided by Navigation Services. Developers interested in future Mac OS compatibility are encouraged to replace their calls to Standard File with calls to Navigation Services.

    Related Materials:

    • The Standard File Package chapter of Inside Macintosh: Files.
    • Navigation Services SDK

Text Services Manager 1.5

The Text Services Manager provides facilities for applications to communicate with various text processing utilities that provide services such as special text input methods, spell checking, hyphenation, et cetera.
  • The Text Services Manager has been extended to support optional font and keyboard synchronization. If the smfDisableKeyScriptSync flag is set in the smGenFlags Script Manager variable, then calls to ActivateTSMDocument will not synchronize the current Keyboard Script with the internal keyboard script state of the Text Services Manager Document. The ActivateTSMDocument call is the only Text Services Manager call that calls through to KeyScript. For more information about optional font and keyboard synchronization, see the Script Manager section.
  • TSM now installs fewer trap patches.
  • Keyboards and input methods can now generate Unicode directly (for compatibility with existing applications, Unicode generated by input devices is automatically converted into a standard Mac encoding).
  • By supporting TSM and creating Unicode TSMDocuments, Applications can receive Unicode input directly.

    Related Materials:

    • The "Text Services Manager" chapter of Inside Macintosh: Text.

Translation Manager

The Translation Manager provides file and scrap translation to allow data to be used by applications other than those used to originally create the data. The following changes have been made in the Translation Manager:
  • The Translation Manager implementation has been moved to the System fileand the user interface has been moved from the, now obsolete, Mac OS Easy Open control panel to the File Exchange control panel's "File Translation" panel.
  • The Translation manager is now implemented in PowerPC code.
  • The available translator lists are now rebuild dynamically. If you register a Translation Extension component after startup, the Translation Manager will recognize it immediately.
  • Contents of the "Translated Documents" folder are now removed at system startup time (the Translation Manager places automatically translated documents into this folder before passing them on to applications).
  • With both QuickTime and MacLinkPlus for Easy Open installed, there are more than 64 possible translation configurations for Desktop Translators, but Desktop Translators could only be configured to use one of the first 64 translations available. This limitation for Desktop Translators has been removed.
  • Applications which open files of a given type may do so without translation. Prior to File Exchange 3.0, if an application claimed (through its bundle and/or 'open' resource) that it could open files of a given type, documents of that type with a different creator type than the application's creator type would be translated rather than opened directly. Now, such documents are opened directly without translation. To see an example of this behavior, under Mac OS 8.1 drop a MoviePlayer movie onto SimpleText. It will open as a picture rather than a movie (as it will be translated by the QuickTime translator first). Now, the movie will open as expected.
  • Translation Manager no longer creates a temporary heap zone for Translation Extension components. Instead, Translation Extension components are loaded into the System Heap (the System Code Fragment Manager context in the case of PowerPC-native Translation Extension components). This means that Translation Extensions are no longer allowed to "leak" memory, as their calls to NewPtr and NewHandle now operate in the System heap.
  • The Translation Manager now disposes of the translation advertisement when tearing down the translation progress dialog contrary to what is stated in "Inside Macintosh: More Macintosh Toolbox" (since the translation advertisement is now allocated in the System heap rather than a temporary heap).

    COMPATIBILITY NOTE
    Developers of PowerPC Translation Extensions are advised to package them as specified in Tech Note 1004 rather than as is done in the Mac OS Easy Open SDK.

    Related Materials:

    • The Translation Manager chapter of Inside Macintosh: More Macintosh Toolbox.
    • Mac OS Easy Open SDK
    • Tech Note 1004

Virtual Memory Manager

The Virtual Memory manager provides virtual memory services for the Mac OS. The following changes have been made in the Virtual Memory Manager:
  • All code needed to run VM on 68040 processors has been removed.
  • GetPageState now correctly returns the state of pages in file mapped space. Before Mac OS 8.5, GetPageState returned kPageOnDisk for unmapped pages. With Mac OS 8.5, GetPageState returns kNotPaged for unmapped pages (as it does for all other memory not controlled by the Virtual Memory).
  • DeferUserFn returned a garbage result if the user function was called immediately. It now returns noErr.

    Related Materials:

Window Manager

The Window Manager is part of the Mac OS providing facilities for drawing and maintaining windows on the screen.
  • The Window Manager is now implemented in PowerPC code.
  • An extensible, collection-based window resource format ('wind') has been added.
  • Floating window support has been added with the routines CreateNewWindow, GetWindowClass, ShowFloatingWindows, HideFloatingWindows, AreFloatingWindowsVisible.
  • Extensive error and parameter checking has been added to all routines.
  • New, advanced window positioning support routines have been added including SetWindowBounds, GetWindowBounds, MoveWindowStructure, ZoomWindowIdeal, and IsWindowInStandardState.
  • New window zooming routines have been added to fully support the recommended zooming human interface specifications.
  • Support for association of tagged data with windows (properties) has been added.
  • GetWindowRegion now always returns the visible state of the specified region even for invisible windows.
  • Update events will no longer occur in foreground applications windows when overlapping windows in background applications become visible.
  • A window's background can now be set to a specific color or pattern without the use of a 'wctb' resource.
  • APIs for modifying a window's update region without changing the current port have been added (InvalWindowRgn/Rect, ValidWindowRgn/Rect).
  • Support for window title popup menus has been added.
  • The new TransitionWindow API has been added for attaching animation and sound to a window for different on screen actions such as showing or hiding a window.
  • A problem where under some circumstances parts of the desktop were not being redrawn correctly has been corrected.
  • Advanced document window support (window proxies) has been added.
  • Window titles are now drawn using condensed and truncated text if the window's title is too large to be displayed in the title bar.

    WARNING:
    Applications using Layer Manager APIs for floating windows will not work with Mac OS 8.5.

    WARNING:
    Applications writing directly to the low memory window list global, either by direct access or by LMSetWindowList, may cause problems in MacOS 8.5. It is strongly recommended that developers interested in future compatibility treat the window list as read-only.

    WARNING:
    Applications writing directly to the GrayRgn may cause problems in MacOS 8.5, and may cease to work properly in future versions of the Mac OS. Developers interested in future compatibility should use the new ShowMenuBar/HideMenuBar routines instead.

    Related Materials:


Control Panels

Control Panels provide user interface facilities for custom configuration of the system. Files of type 'APPC' are auto-routed to the Control Panels folder when they are dropped onto the System Folder's icon. Also, starting with Mac OS 7.6, files of type 'APPC' may contain 'INIT' resources that will be executed at system startup time.

Control panels may contain system extensions. For such a system extension to be active, the control panel must be located in the Control Panels folder when the system starts up. INIT resources stored inside of control panel files are not loaded if the shift key is held down while the system is starting up.

In Mac OS 8.5, several related control panels have been consolidated into individual control panels.

Appearance 1.1

The Appearance control panel provides user interface configuration facilities for the appearance of graphical user interface elements throughout the system. It replaces both the older Color and WindowShade control panels and provides a superset of the features that were provided by these items.
  • The new Apperance control panel provides several new panels for switching themes.
  • Desktop Pictures control panel facilities are now located in the Appearance control panel.
  • AppleScript support includes:
    • Query and set every Appearance option (theme, color, sound effects, desktop pictures and patterns, fonts, etc.)

    Related Materials:

Apple Menu Options 1.1.4

The Apple Menu Options control panel provides user interface configuration facilities for the appearance and behavior of the Apple Menu. There are some corrections present in this implementation of the Apple Menu Options control panel.
  • A problem where the Apple Menu was not being drawn correctly when the system font was changed to a font of a different size. This has been corrected.
  • Balloons no longer appear when Apple Menu Options is front most and the mouse is not over its window.
  • A problem where Apple Menu Options' patch to UnmountVol could cause a big disk thrash has been corrected. This would happen if the volume passed to UnmountVol is not identified by a volume reference number.
  • AppleScript support includes:
    • Query and set all Control Panel settings, including count of items to remember.

ColorSync 2.5.1

ColorSync provides system level color management to the Mac OS platform that enables the publishing software to achieve repeatable, reliable and consistent color onscreen, in print, and for electronic delivery.
  • Multiprocessing capabilities have been added,
  • AppleScript support for the following has been added:
    • Embedding a ColorSync profile in an image file.
    • Match or proof an image to an output device.
    • Query or set the default profile.

    Related Materials:

    • The ColorSync SDK

Control Strip 2.0

Control Strip is a control panel providing configuration facilities for the control strip .
  • Control Strip 2.0 is now an application (APPC) and contains fewer trap patches.
  • Version 2.0 of Control Strip corrects a number of problems with the existing version and adds several features that expand the User Experience. There are two new Control Strip utility routines that are available to the user.
  • Version 2.0 adds module drag-and-drop install capability.

    Related Materials:

    • The Control Strip SDK

Date & Time 8.1

The Date and Time control panel provides user interface facilities for setting the system clock and configuring the display format for both the date and the time.
  • Internet time synchronization and better daylight savings time support have been added.
  • Location information is now set in the Date & Time control panel.
  • Added Regina, Saskatchewan, Canada to the list of locations.
  • Fixed incorrect spelling of the city name "Tientsin" to "Tianjin".

File Exchange 3.0

File Exchange allows users to set mappings from PC file extensions to Mac OS file types, to mount PC SCSI disks and drive containers, and to set File Translation preferences. The following changes have been made in File Exchange:
  • File Exchange Features
    • PowerPC native.
    • Appearance-savvy.
    • Consolidated interface for PC Exchange and File Translation (formerly, Mac OS Easy Open).
    • Supports AppleScript.
    • Integrated editing of Internet Config extension mappings.
  • PC Foreign File System Features
    • PowerPC native.
    • Can mount all available PC volumes at startup.
    • Can mount all available PC volumes "on the fly".
    • Supports multiple SCSI busses.
    • Uses HDI driver (from DiskCopy) to mount PC disk images.
    • Improved read/write/cache code path.
    • Internet Config integration.
    • Desktop Database support.
    • Permits File Sharing of PC volumes and disk images.
  • Translation Manager Features
    • PowerPC native.
    • Built in to System file.
    • Callable from 68K code.
  • AppleScript support includes:
    • Query and create translation and extension mappings.
    • Query or change control panel settings.
  • Corrected a problem where a particular data file format saved to PC disk was unreadable. Here, the error returned by SetFPos(...) was not being handled correctly when an attempt to set the mark past EOF was being made.
  • Two-byte characters in traditional dos style 12345678.123 format file names weren't being displayed in Get Info. This has been corrected.
  • Determines disk type (FAT12, FAT16, FAT32) using disk geometry, which primarily fixes problems with low-capacity FAT16-formatted PC cards.
  • The PC Foreign File System's "mimicry" of HFS has been improved. Now, under as many circumstances as possible, the file system calls to the PC Foreign File System behave the same as similar calls to HFS).
  • Allows use of PC disks with allocation block size >= 32K (for example, 2GB disks)

File Sharing

The File Sharing control panel provides facilities for end user configuration of file sharing services on the computer.
  • AppleScript support includes:
    • Query or change control panel settings.
    • Disconnect a user.

Internet 1.0.0

A new user interface control panel application (APPC) which replaces the InternetConfig interface and greatly enhances the user experience. The "Internet" control panel replaces the configuration application in the Internet Config 2.0.1 package.
  • User interface support for InternetConfig's switchable sets of preferences has been added for handling multiple locations or multiple users.
  • The Internet application provides AppleScript support utilizing some of this configuration information including the following commands:
    • Go to a URL
    • Read Mail

    Related Materials:

Keyboard 8.1

The Keyboard control panel provides user interface facilities for configuration of connected keyboards.
  • A control for turning on or off Font and Keyboard Synchronization has been added.
  • The Keyboard menu now correctly displays balloon help for items beyond the seventh.
  • Balloon help messages for the keyboard menu items have been reworded in some cases.
  • The keyboard menu now has a "Customize..." menu item as the last menu item. Choosing it will open the Keyboard control panel.

Location Manager 2.0.0

Apple Location Manager is a toolbox extension that allows mobile users to save and restore sets of configurations ("locations") under a single name. For example, a user can define a group of printers, network settings, and extension sets for multiple locations.
  • The maximum number of locations has been increased.
  • A problem where the system startup screen was not being redrawn correctly after the location manager extension window was dismissed has been corrected.
  • AppleScript support includes:
    • Query or change the current location.

    Related Materials:

Memory 8.0

The Memory control panel provides user interface facilities for the configuration of virtual memory, RAM disk storage, and the size of the disk cache.
  • The Memory control panel is now an APPC.
  • Full support of the Appearance Manager has been adopted.
  • By default, the disk cache size is now automatically calculated. Users can still customize the disk cache size setting or they can allow the system to calculate an optimal setting for them.

Monitors & Sound 1.4.0

The Monitors & Sound control panel provides user interface services for configuring and adjusting various settings for AppleVision monitors attached to the computer along with services formerly provided by the Monitors control panel and by the Sound control panel.

The Monitors and Sound control panel has been updated to support new hardware.

Remote Access 3.1.0

The new Remote Access control panel provides user interface facilities for configuring PPP and ARA connections.
  • The AppleTalk Remote Access Client interface and the Point to Point Protocol control panel have been consolidated into the Remote Access control panel.
  • Apple Remote Access 2.1 and OT/PPP 1.0.1 have been replaced by ARA 3.1; 3.1 will now be the default, consolidated remote client software supporting both PPP and ARAP negotiation protocols.
  • ARA 3.1 contains a few feature enhancements and many bug fixes since ARA 3.0, ARA 2.1, and OT/PPP 1.0.1.
  • 3.1's PPP client supports MS-CHAP and includes other improvements for better Windows NT compatibility.
  • ARA 3.x includes support for both TCP/IP and Appletalk (ATCP) over a PPP link".

TCP/IP

The TCP/IP control panel provides user interface facilities for configuring TCP/IP protocols.
  • To cut down the amount of typing required to manually configure TCP/IP, the 'IP Address' field now allows addresses to be entered in 'address/mask' notation. For example, if the address '12.34.56.78/24' is entered, then the 24-contiguous-ones mask value (255.255.255.0) is automatically entered in the 'Subnet mask' field, and the 'Router address' field, if empty, is automatically initialized to the first valid address on that subnet (12.34.56.1 in this example). The 'Subnet mask' and 'Router address' fields remain editable should the user wish to change the automatically-entered values.
  • A new field has been added allowing users to enter their DHCP user id.

Users and Groups 8.0.1

This control panel provides facilities for the specification and configuration of user names and passwords for people who are able to establish network connections with the computer.

AppleScript support includes:

  • Query or set privileges of users and groups.
  • Create and delete users and groups.

Web Sharing 1.5.1

Web Sharing provides facilities for users to configure and set up the "Web Sharing" folder on their computer to act as a World Wide Web site. Web Sharing runs as an HTTP server allowing users to access files stored in the Web Sharing folder using any web browser program available on any computer platform. New features for Web Sharing include:


System Extensions

System extensions are located in the Extensions folder inside the System Folder. For a system extension to be active, it must be located in the Extensions folder when the system starts up. Extensions are not loaded if the shift key is held down while the system is starting up.

The "Extensions Disabled" message has been replaced with the text "Extensions Off" for consistency with documentation and terminology.

Apple CD/DVD Driver 1.0.1

The Apple CD-ROM driver contains some enhancements for support of new Apple products and corrects some problems found in previous versions of the driver.
  • Apple CD-ROM and Apple DVD-ROM drivers have been combined into a single file called Apple CD/DVD Driver.

    COMPATIBILITY NOTE
    Non-Apple CD drives are not supported by the Apple CD-ROM driver.

    Related Materials:

    • Technote DV18, "CD-ROM Notes (Most Excellent)"

Apple Enet

The Apple Ethernet driver provides support for Apple's built in ethernet and cards on newer machines.
  • Features improved performance.
  • Written in PowerPC code.
  • Obsoletes a number of older drivers and consolidates their functionality into one driver.

    Related Materials:

    • A new Ethernet Driver framework is available that replaces the Mentat template.

AppleScript 1.3

AppleScript is a component of the operating system that provides a scripting interface for users to automate actions that would normally require use of the menus and keyboard, but even more importantly allows users to access functionality of applications which would be difficult or impossible to access by hand.

Corrections

  • The Read/Write Commands can now read lists of lists correctly. The Read/Write commands have been added to the Standard Additions.
  • Displaying certain large, nested, or recursive lists could cause a crash. This has been fixed by adding processor stack checks along with the GC stack checks.
  • The Store Script scripting addition was leaving its resource fork open after it had completed execution. Under some conditions, subsequent calls to the Resource Manager could load resources from AppleScript into the current application's heap causing unexpected problems. This has been corrected and the Store Script scripting addition closes its resource file after use.
  • The AGStart scripting addition has been integrated into the Standard Additions.
  • A memory leak in Run Script was fixed.
  • AppleScript Gestalt and Component versions are now correct. Interface is 1.1, implementation is 1.3.
  • The AppleScript "Applet" component was clearing one byte of memory at location $0006. This has not been found to be a problem on Macintosh computers as this location is unused.

    Unicode Types and Coercions

    Built In to AppleScript.

    This version introduces the type Unicode text. Its basic structure is a stream of Unicode text. It can be coerced to and from the normal typeText, typeStyledText, and typeIntlText.

    Unit Types and Coercions

    Built In to AppleScript.

    This version introduces a concept of units of measurement, and some basic units. Applications or OSAXen can extend these easily; more details on this will be forthcoming in future notes. The types defined so far are:

    • meters
    • liters
    • degrees Celsius
    • degrees Fahrenheit
    • feet
    • inches

    The basic manner of use is by coercion, e.g. "5 as inches". A value of one class can be coerced into another similar class, such as "5 as feet as inches", so long as both classes share a common base unit (in this case meters).

    To display these properly, a global Get Data handler has been added to handle requests on object specifiers and coerce them to values.

    New Suites

    New suites for Internet data types and Macintosh connectivity are now included in the 'aeut' resource.

    Consolidated Scripting Additions

    Instead of existing as many individual scripting additions, the following scripting additions have been consolidated into the "Standard Additions" scripting addition:

    • Beep
    • Choose Application
    • Choose File
    • Current Date
    • Display Dialog
    • File Commands
    • Load Script
    • Numerics
    • String Commands
    • Read/Write Commands
    • Run Script
    • Store Script
    • Time To GMT

    COMPATIBILITY NOTE
    The interface and functionality of these is unchanged from version 1.1.2.

    New Scripting Additions

    Several new scripting addition commands are added. The following lists the new additions. For more information, see the AppleScript 1.3 release notes.

  • Delay for a fixed amount of time
  • Speak the given text
  • Summarize the specified string or file in a short block of text.
  • Folder Actions are scripts attached to folders in the Finder.
  • The Clipboard scripting addition from Jon's Commands was integrated into the Standard Additions.

    Standard Scripting Additions

    Standard scripting additions for Mac OS 8.5 include:

    • Standard scripting additions from AppleScript 1.1
      • Display a dialog box.
      • Choose a file, folder, or application.
      • Open, close, read, and write files.
      • Load, store, and run scripts.
      • Get the current date and GMT offset.
      • Convert characters to numbers.
      • Generate random numbers and round numbers to nearest integer.
      • Get the path name of special System folders and items.
    • Delay.
    • Display Dialog has 'giving up' parameter.
    • Mount a file server volume.
    • Say (Text to Speech).
    • Summarize (Find By Content feature).

    Related Materials:

AppleShare Workstation Client 3.8

AppleShare Workstation Client provides file sharing services for the Finder and applications on Mac OS-compatible computers networked with file servers.

COMPATIBILITY NOTE
AppleShare Workstation Client 3.7.1 can be used with versions of Mac OS including 7.5.3 and later.

New UAM (User Authentication Module) API has been added that allows UAMs to use TCP/IP.

Related Materials:

Application Switcher

The Application Switcher is a new user interface element that appears as a floating window providing a clickable list of active processes running on the computer.

COMPATIBILITY NOTE
It is possible to disable or change the keyboard shortcut for switching between open applications using the script on the Application Switcher Help page or by using AppleScript.

AppleScript support for the application window includes:

  • Query and set location, size, and properties of the Application Window

Desktop Printing

Desktop Printing provides easy access to printers by locating them on the desktop. Users can access information about their print jobs by opening these icons, and they can print documents by dropping them into the printer icon.
  • Third party desktop printing is now supported.

    AppleScript support includes:

    • Get a list of all desktop printers.
    • Create a new desktop printer.
    • Set the current printer to an existing desktop printer.

    Related Materials:

    • See 'DTP Revealed(update).pdf' for the latest specs on how you can add support for desktop printing to your printer driver.

Find By Content 1.0

Provides system wide search facilities for finding related files based on their content.
  • C interfaces are available for developers wanting to access the Find By Content services to search files on disks from within their applications.

    Related Materials:

    • Find By Content SDK
    • Find in Mac OS 8.5 Technote

Internet Config 2.0.1

Internet Config provides a centralized storehouse of information for various settings utilized by Internet applications. It provides methods for applications to both retrieve and store configuration information.
  • Support for switchable sets of preferences has been added for handling multiple locations or multiple users.
  • A new API for interrupt safe file extension mapping designed for file system developers has been added.
  • Additional file types have been added to the file extension mapping database.
  • InternetConfig clients can now link against a CFM library.

    Related Materials:

LaserWriter 8 version 8.6

LaserWriter 8 provides printing services for PostScript printers. The new LaserWriter 8 software provides many enhancements and new features of interest to developers including the following:
  • LaserWriter driver supports Unicode and the euro character.
  • Support for printing Unicode text.
  • Better support for Desktop Printing.
  • Support for the Appearance Manager.
  • Support for ColorSync 2.5.
  • Improved facilities for printing of PS, EPS, JIF(JPEG, EXIF, GIF), and PICT file formats.
  • Support for printing over a variety of communication links including IrDA, PAP, LPR, and developer-defined communication channels.
  • LaserWriter 8 now uses the 'ppdf' FindFolder selector to locate printer description files.
  • Desktop Printer files can now be conveniently shared among users on different computers.
  • Support for partial TrueType font downloading has been added. This featureis dependent on ATSUI and supersedes the TrueType Booster Extension found in some systems using two-byte characters.

    Related Materials:

    • Technote 11xx: 'Introducing the LaserWriter 8 Driver Version 8.6

Mac OS Runtime for Java™ 2.0

Mac OS Runtime for Java™ (MRJ) is Apple's implementation of the Java runtime environment. MRJ allows Java functionality to be embedded in Mac OS applications, and applications using MRJ's JManager API are able to run Java applets and applications.

Network Setup Extension

The Network Setup Extension provides a provides facilities for programmatic configuration of the AppleTalk, TCP/IP, and Remote Access settings.
  • The Network Setup Extension provides both AppleScript and C language API s for configuration of network settings.

Open Transport 2.0

OpenTransport is the only supported networking technology for Mac OS 8.5.
  • Open Transport 2.0 is installed with Mac OS 8.5
  • Open Transport contains SNMP & OT SNMP Admin, DHCP enhancements for improved compatibility with Windows NT, including Client ID, new APIs for manipulating configurations, scriptability for AppleTalk, TCP, Modem, Remote Access, IR control panels, and bug fixes.
  • Open Transport's implementation of the Dynamic Host Configuration Protocol (DHCP) will be improved to support a number of requested features, including Client Identification, retention of the lease on a given IP address across boots, improvement of user feedback in the event that the DHCP server is unavailable, display of the time remaining on a lease, allowing the user to "re-lease" an address, support of RFC 2131, and provision of an API to allow third-party-developers to access DHCP fields unused by Open Transport. These changes address customer concerns about OT's DHCP compatibility with Windows NT DHCP servers.
  • Support for the Simple Network Management Protocol (SNMP) will finally be available for Open Transport. Support for the version 2 Management Information Base (MIB II), instrumentation for AppleTalk and TCP/IP protocols and transports, administrative tools, and system agent support for the PCI bus will be provided. This is one of the last capabilities that had not been ported from classic networking to be compatible with Open Transport.
  • Apple Remote Access, version 3.1, will be bundled with Open Transport 2.0 and will replace OT/PPP as part of the system release. This adds a much-requested feature, AppleTalk/PPP support to Mac OS. This will further ease the migration from ARAP to PPP by major accounts.
  • Minor changes to Open Transport support for Apple Remote Access to allow feature requests such as support for MS-CHAP Authentication support, RFC 1877 to automatically negotiate DNS address with a server, and NT-style Callback support to be implemented in subsequent releases of Apple Remote Access. These changes address customer concerns about OT's compatibility with Windows NT PPP servers. This release will also include the latest modem scripts for Apple and popular 3rd party modems.
  • No particular developer impact is foreseen with respect to Open Transport 2.0. Open Transport 2.0 will be fully compatible with previous versions.
  • Apple Remote Access 3.1 is bundled with Open Transport 2.0.
  • If Open Transport TCP/IP is configured to use DHCP and it receives no response from any DHCP server within 30 seconds, it will dynamically assign a temporary address in the local non-routable self-assignment range (169.254.x.x) and operate using this address until a DHCP server becomes available. This will allow hosts on the same Ethernet to communicate with each other using IP (for example, to allow high-performance TCP/IP access to an AppleShare IP server) even if no connection to the global Internet is available.

    Related Materials:

QuickTime™ 3.0

QuickTime provides various multimedia services for the Mac OS including the ability to display movies and facilities for the translation and display of various audio and visual data file formats.

QuickDraw 3D

QuickDraw 3D provides 3D drawing services for the Mac OS.

PlainTalk 1.5.3

The PlainTalk provides both speech recognition services and services for the translation of text into audible speech.
  • Mac OS 8.5 installation ships with English Text to Speech 1.5.3, Speech Recognition, and Mexican Spanish Text to Speech (English Text to Speech is installed as part of the default install andthere is an option to install Speech Recognition on PowerPC computers).
  • Speech is now available via the Say osax - part of the standard AppleScript additions.
  • The new Readme file contains information on how to place emphasis on certain words that are spoken.
  • Three new High Quality voices have been added that were previously available as a separate download from speech.apple.com.
  • Talking alerts are now turned on in the default install (with a 10 second delay).

    Related Materials:

    • The Speech Manager chapter of Inside Macintosh: Sound.
    • http://www.apple.com/speech
    • Speech Recognition SDK
    • Text to Speech SDK


Apple Menu Items

Items in the Apple Menu Items folder appear in the Apple Menu. Files of type 'APPD' are auto-routed to the Apple Menu Items folder when they are dropped into the System Folder's icon.

Apple System Profiler 2.0.0

The Apple System Profiler provides a simple way to obtain information regarding the current system configuration. Information provided by the Profiler is useful for customer support representatives in assisting users.
  • AppleScript support includes:
    • Query or set which data options to gather in a system profile report.
    • Create a system profile report (document).
    • Save a report to disk.
    • Print a report.
  • Added close box to Quit the application.
  • The Apple System Profiler now searches and reports more hardware and software configuration information than did previous versions.

Find 2.0.0

The Find application provides search facilities on Mac OS compatible computers. This new version of find supports searching by content and Internet searches.
  • Find passes additional information to applications along with 'odoc' events allowing applications to display information about how a file was found.
  • Find utilizes search plug-in files describing Internet search sites. Specifications are available for search site administrators to create their own search plug-in files thereby making their search sites available to the Find application.
  • Find provides AppleScript support for search by content, indexing volumes, searching the internet, and searching for files by name.

    Related Materials:

    • Find in Mac OS 8.5 Technote
    • Find SDK

Network Browser

The Network Browser application allows for convenient access to file servers available on AppleTalk networks.
  • Mac OS 8.5 ships with Network Browser 1.0.

Key Caps 8.1

Key Caps provides user interface facilities for displaying and viewing keyboard characters produced by various key combinations.
  • Key Caps will work with System 7.5.3 and later versions of the Mac OS.
  • Key Caps is now an 'APPD' type application.
  • Provides Unicode support for 'uchr' system resources on PowerPC computers.
  • For better display of multiple unicode characters that map to a single key, the Key Caps window can now be zoomed to a larger size. When the cursor is on a key that is will display multiple Unicode characters, a yellow floating popup window showing all the characters will appear below the key.
  • Dead keys are outlined using a gray color instead of a gray pattern.
  • Support for Inline text entry has been added.
  • Added new support for keypad display on PowerBook G3. Two resource tables, 'kcws'(200) and 'kcws'(300) have been added for displaying 'fn' mode and 'num-lock' mode (keypad state) respectively. Each table contains 128 entries, and each entry maps a virtual key code in the corresponding 'KCAP' resource to the virtual key code in either 'fn' mode or 'num-lock' mode. If no mapping exists, such as an unused key in the 'num-lock' mode, zero is used instead of the virtual key code.
  • Key Caps now draws smaller keys with smaller font and less 3D styling than other square keys to allow for better character visibility. For example, the arrow keys on the PowerBook G3 are drawn in this way.
  • Any new keys with either the standard 21 pixel width or 21 pixel height (defined in 'KCAP' resources) will be correctly drawn without requiring any new supporting 'kbit' or 'kpdr' resource in Key Caps.
  • The Key Caps Preferences file in the Preferences folder now contains the version of the last instance of Key Caps that wrote into the Preferences file. Get Info window of the Preferences file displays this version information.
  • A new resource in the Preferences file 'pkf2'(4000) is used to store the default font name instead of font family ID, which is stored in the 'pkft' resource.
  • A problem where a crash could occur when pasting a large amount of text into the text box has been corrected.

    Related Materials:

    • Appearance Manager SDK, Mac OS 8 Toolbox Reference.
    • IM:Text, Font Manager, p.4-33.
    • Technote TE27 - Inline Input for TextEdit with TSMTE.


Apple Extras

SNMPAdmin 1.0.0

Open Transport now supports SNMP (Simple Network Management Protocol). SNMPAdmin provides user interface facilities for configuring SNMP.
  • AppleScript support includes the ability to address and send e-mail

Apple Video Player

The Apple Video Player provides facilities for live video playback.
  • AppleScript support includes:
    • Play video from any source.
    • Capture video to QuickTime movie or PICT.
    • Capture Teletext or Closed Caption data.
    • Navigate Teletext screens.
    • Change channel, volume, Teletext page, bass/treble, brightness/sharpness, et cetera.


Utilities

Disk Copy

Disk Copy provides facilities for disk image creation, mounting, and writing.
  • AppleScript support includes:
    • Query and set all application preferences.
    • Mount a Disk Copy image as a disk volume.
    • Unmount Disk Copy volumes.
    • Check and verify Disk Copy images and checksums.
    • Make a floppy from a Disk Copy document.

Disk First Aid

Disk First Aid is an application program that provides disk diagnostic and repair services. It is normally located in the Utilities directory in the startup disk's root directory.
  • The new Disk First Aid application runs whenever the "improper shut down" dialog appears.
  • Unlike previous versions of Disk First Aid, the new Disk First Aid program allows you to repair the startup volume, and other volumes with open files.
  • Disk First Aid now verifies and repairs the "HFS wrapper" on a Mac OS Extended volume.
  • Disk First Aid can now repair many kinds of damage caused by older disk utilities that are not compatible with Mac OS Extended volumes.

    AppleScript support includes:

    • Verify and/or repair a volume.

    Related Materials:

    • The Disk First Aid Read Me file.

Drive Setup

Drive Setup provides drive initialization services for Apple hard drives.
  • Drive Setup can now reinitialize a drive maintaining the former partition scheme and formats.
  • Drive Setup warns before updating a driver and contains bug fixes.


Apple Developer Utilities

Mac OS 8.5 requires updated copies of the following Apple Developer Utilities:

MacsBug 6.5.4a5c1

MacsBug is Apple's low level debugger providing interface facilities for the disassembly and perusal of machine level instructions.

COMPATIBILITY NOTE
Mac OS 8.5 will not load versions of MacsBug earlier than 6.5.4a5. If Mac OS 8.5 finds an unsupported version of MacsBug in the System Folder, it will attempt to rename the MacsBug file to "MacsBug Obsolete" (where " Obsolete" is a localized string).

Related Materials:

  • MacsBug Reference and Debugging Guide
  • MooF!


Items No Longer Supported

Appearance Extension

The Appearance Extension is no longer in the extensions folder. Its functionality has been incorporated into the system file.

Apple Remote Access Client

Apple Remote Access Client has been integrated into Remote Access 3.1.

Cyberdog

Cyberdog is no longer included with Mac OS. For more information, see the OpenDoc web pages at http://www.opendoc.apple.com/

Desktop Pictures control panel

The Desktop Pictures control panel is no longer installed. Its functionality has been incorporated into the Appearance control panel.

Mac OS Easy Open

The Mac OS Easy Open control panel is no longer installed. Its interface has been incorporated into the File Exchange control panel, and its functionality has been moved to the system file.

Map control panel

The Map control panel is no longer supported. Its functionality has been incorporated into the Date & Time control panel. For backwards compatibility, it is provided in the Apple Extras folder.

OpenDoc

OpenDoc is no longer included with the Mac OS. For more information, see the OpenDoc web pages at http://www.opendoc.apple.com/.

AppleShare IP 6.1 will require and include OpenDoc when it ships, and will be supported on Mac OS 8.5 in that configuration.

Open Transport/PPP 1.0.1

Open Transport/PPP has been integrated into Remote Access 3.1.

WorldScript Power Adapter

Obsoleted by changes to script manager/font manager/more.


Acknowledgments

Special thanks to Pete Gontier, Tom Maughan, Kathryn Donahue, Ingrid Kelly, and Jim Luther.

And very special thanks to Matt Ackeret, Yan Arrouye, Sue Bartalo, Brian Bechtel, Candy Beymer, Tim Bodine, Scott Bongiorno, Jim Chan, Stuart Cheshire, Stephen Chick, Bill Coderre, Lee Collins, Mark Cookson, Mark Day, Rich Dellinger, Chris De Salvo, Chris Espinosa, Dave Evans, Mark Fernandes, Nitin Ganatra, Donna Gardner, Arno Gourdol, Deborah Grits, C.K. Haun, Brad Hochberg, Rick Hoiberg, Riley Howard,Devon Hubbard, Daniel Jalkut, Hidetomo Katsura, Nick Kledzik, Michael J. Kobb, Nancy Lammlein, Barry Langdon-Lassagne, Darren Litzinger, Wayne Loofbourrow, Joseph Maurer, Peter McInerney, John R. Miller, Quinn "The Eskimo!", Terry Rawlings, Eric Simenel, David "Lefty" Schlesinger, Otto Schlosser, Greg Scown, Keith Stattenfield, Steven Swenson, Chris Thomas, Robert Ulrich, Dan Wolfe, and Jason Yeo.

To contact us, please use the Contact Us page.